/*!
 Autosize v1.17.7 - 2013-09-03
 Automatically adjust textarea height based on user input.
 (c) 2013 Jack Moore - http://www.jacklmoore.com/autosize
 license: http://www.opensource.org/licenses/mit-license.php
 */
(function (e) {
    "function" == typeof define && define.amd ? define(["jquery"], e) : e(window.jQuery || window.$)
})(function (e) {
    var t, o = {
            className: "autosizejs",
            append: "",
            callback: !1,
            resizeDelay: 10
        },
        i = '<textarea tabindex="-1" style="position:absolute; top:-999px; left:0; right:auto; bottom:auto; border:0; padding: 0; -moz-box-sizing:content-box; -webkit-box-sizing:content-box; box-sizing:content-box; word-wrap:break-word; height:0 !important; min-height:0 !important; overflow:hidden; transition:none; -webkit-transition:none; -moz-transition:none;"/>',
        n = ["fontFamily", "fontSize", "fontWeight", "fontStyle", "letterSpacing", "textTransform", "wordSpacing", "textIndent"],
        s = e(i).data("autosize", !0)[0];
    s.style.lineHeight = "99px",
    "99px" === e(s).css("lineHeight") && n.push("lineHeight"),
        s.style.lineHeight = "",
        e.fn.autosize = function (i) {
            return i = e.extend({

                },
                o, i || {

                }),
            s.parentNode !== document.body && e(document.body).append(s),
                this.each(function () {
                    function o() {
                        var t, o;
                        "getComputedStyle" in window ? (t = window.getComputedStyle(h), o = h.getBoundingClientRect().width, e.each(["paddingLeft", "paddingRight", "borderLeftWidth", "borderRightWidth"],
                            function (e, i) {
                                o -= parseInt(t[i], 10)
                            }), s.style.width = o + "px") : s.style.width = Math.max(p.width(), 0) + "px"
                    }
                    function a() {
                        var a = {

                        };
                        if (t = h, s.className = i.className, d = parseInt(p.css("maxHeight"), 10), e.each(n,
                                function (e, t) {
                                    a[t] = p.css(t)
                                }), e(s).css(a), o(), window.chrome) {
                            var r = h.style.width;
                            h.style.width = "0px",
                                h.offsetWidth,
                                h.style.width = r
                        }
                    }
                    function r() {
                        var e, n;
                        t !== h ? a() : o(),
                            s.value = h.value + i.append,
                            s.style.overflowY = h.style.overflowY,
                            n = parseInt(h.style.height, 10),
                            s.scrollTop = 0,
                            s.scrollTop = 9e4,
                            e = s.scrollTop,
                            d && e > d ? (h.style.overflowY = "scroll", e = d) : (h.style.overflowY = "hidden", c > e && (e = c)),
                            e += f,
                        n !== e && (h.style.height = e + "px", w && i.callback.call(h, h))
                    }
                    function l() {
                        clearTimeout(u),
                            u = setTimeout(function () {
                                    var e = p.width();
                                    e !== y && (y = e, r())
                                },
                                parseInt(i.resizeDelay, 10))
                    }
                    var d, c, u, h = this,
                        p = e(h),
                        f = 0,
                        w = e.isFunction(i.callback),
                        z = {
                            height: h.style.height,
                            overflow: h.style.overflow,
                            overflowY: h.style.overflowY,
                            wordWrap: h.style.wordWrap,
                            resize: h.style.resize
                        },
                        y = p.width();
                    p.data("autosize") || (p.data("autosize", !0), ("border-box" === p.css("box-sizing") || "border-box" === p.css("-moz-box-sizing") || "border-box" === p.css("-webkit-box-sizing")) && (f = p.outerHeight() - p.height()),
                        c = Math.max(parseInt(p.css("minHeight"), 10) - f || 0, p.height()),
                        p.css({
                            overflow: "hidden",
                            overflowY: "hidden",
                            wordWrap: "break-word",
                            resize: "none" === p.css("resize") || "vertical" === p.css("resize") ? "none" : "horizontal"
                        }), "onpropertychange" in h ? "oninput" in h ? p.on("input.autosize keyup.autosize", r) : p.on("propertychange.autosize",
                        function () {
                            "value" === event.propertyName && r()
                        }) : p.on("input.autosize", r), i.resizeDelay !== !1 && e(window).on("resize.autosize", l), p.on("autosize.resize", r), p.on("autosize.resizeIncludeStyle",
                        function () {
                            t = null,
                                r()
                        }), p.on("autosize.destroy",
                        function () {
                            t = null,
                                clearTimeout(u),
                                e(window).off("resize", l),
                                p.off("autosize").off(".autosize").css(z).removeData("autosize")
                        }), r())
                })
        }
});